Payment Reception Form
Description of the Working Scheme.
On the client's web server, a payment form is generated and provided to the user for submission.
After submitting the form, the user is redirected to the processing page to complete the payment.
After the payment is processed, the user is redirected either to the SUCCESS_URL or the FAIL_URL. At the same time, an empty GET request is sent to the STATUS_URL, and upon receiving it, the payment status should be requested (using the /api/einvoice/status endpoint). The INVOICE_ID from the previously generated form should be passed, and further actions should be taken based on the received response.
If you need to accept payment without redirecting to the processing site, you should pass the form as GET parameters to the same address and open the page in an IFRAME on the merchant's website.
<form action="https://acquiring.obmenka.ua/acs" method="POST"> <input type="hidden" name="CLIENT_ID" value="номер кассы" /> <input type="hidden" name="SIGN" value="подпись формы" /> <input type="hidden" name="SIGN_ORDER" value="AMOUNT;CURRENCY;..." /> <input type="hidden" name="INVOICE_ID" value="номер заказа" /> <input type="hidden" name="AMOUNT" value="100.00" /> <input type="hidden" name="ACCOUNT" value="123" /> <input type="hidden" name="CURRENCY" value="UAH" /> <input type="hidden" name="PAYMENT_CURRENCY" value="visamaster.uah" /> <input type="hidden" name="DESCRIPTION" value="Some payment description" /> <input type="hidden" name="SUCCESS_URL" value="https://test.ua/success/invoice_id" /> <input type="hidden" name="FAIL_URL" value="https://test.ua/fail/invoice_id" /> <input type="hidden" name="STATUS_URL" value="https://test.ua/status/invoice_id" /> </form>
Field Decryption (fields marked with an asterisk are mandatory)
| Field | Discription |
|---|---|
| CLIENT_ID* | Cash register number from the personal account |
| SIGN* | Request signature |
| SIGN_ORDER* | Order of field concatenation when forming the signature |
| INVOICE_ID* | Invoice number in the merchant's accounting system. Invoice numbers must be unique (uniqueness is checked)!!! With one number, you can accept payment only once!!! |
| AMOUNT* | The amount to be debited |
| ACCOUNT | User identifier in the merchant's system (account number or any other unique identifier) |
| CURRENCY* | Currency for issuing the invoice. Available currencies: UAH, USD, EUR, LTC, BTC, BCH, USDT |
| PAYMENT_CURRENCY | Currency in which the payment should be accepted. Available currencies: Afri Money, CDF CONGO - afrimoney-congo.cdf Afri Money, GMD GAMBIA - afrimoney-gambia.gmd Airtel Money, ZMW ZAMBIA - airtel-zambia.zmw Airtel Money, XAF CAMEROON - airtel-cameroon.xaf Airtel Money, UGX UGANDA - airtel-uganda.ugx Airtel Money, MGA - airtel.mga Airtel Money, CDF CONGO - airtel-congo.cdf Airtel Money, TZS TANZANIA - airtel-tanzania.tzs Airtel Money, USD CONGO - airtel-congo.usd Airtel Money, RWF RWANDA - airtel-rwanda.rwf Airtel Money, MWK MALAWI - airtel-malawi.mwk Airtel Money, KES KENYA - airtel-kenya.kes Airtel Money, GHS GHANA - airtel-ghana.ghs Airtel Money, XAF CONGO-BRAZZAVILLE - airtel-congo-brazzaville.xaf Bank Transfer, NGN - bank.ngn Bitcoin, BTC - bitcoin Bitcoin Cash, BCH - bitcoin_cash ChainLink, LINK - link Coris, XOF BURKINA-FASO - coris-burkina-faso.xof EFT, ZAR SOUTH-AFRICA - eft-south-africa.zar Ethereum, ETH - ethereum Expresso, XOF SENEGAL - expresso-senegal.xof FreeMoney, XOF SENEGAL - free_money-senegal.xof Halotel, TZS TANZANIA - halotel-tanzania.tzs IMPS, INR - imps.inr Litecoin, LTC - litecoin Monero, XMR - monero MOOV, XOF BURKINA-FASO - moov-burkina-faso.xof MOOV, XOF BENIN - moov-benin.xof MOOV, XOF MALI - moov-mali.xof MOOV, XOF TOGO - moov-togo.xof MOOV, XOF CI - moov-ci.xof MPesa, CDF CONGO - mpesa-congo.cdf MPesa, USD CONGO - mpesa-congo.usd MPesa, TZS TANZANIA - mpesa-tanzania.tzs MPesa, KES KENYA - mpesa-kenya.kes MTN, UGX UGANDA - mtn-uganda.ugx MTN, XOF BENIN - mtn-benin.xof MTN, RWF RWANDA - mtn-rwanda.rwf MTN, XOF CI - mtn-ci.xof MTN, GHS GHANA - mtn-ghana.ghs MTN, XOF TOGO - mtn-togo.xof MTN, XAF CAMEROON - mtn-cameroon.xaf MTN, GNF GUINEA - mtn-guinea.gnf MTN, ZMW ZAMBIA - mtn-zambia.zmw MVola, MGA - mvola.mga OPay, NGN - opay.ngn Orange Money, XOF TOGO - orange_money-togo.xof Orange Money, XOF MALI - orange_money-mali.xof Orange Money, XOF BURKINA-FASO - orange_money-burkina-faso.xof Orange Money, XOF SENEGAL - orange_money-senegal.xof Orange Money, GNF GUINEA - orange_money-guinea.gnf Orange Money, SLE SIERRA-LEONE - orange_money-sierra-leone.sle Orange Money, CDF CONGO - orange_money-congo.cdf Orange Money, RWF RWANDA - orange_money-rwanda.rwf Orange Money, USD CONGO - orange_money-congo.usd Orange Money, XAF CAMEROON - orange_money-cameroon.xaf Orange Money, XOF CI - orange_money-ci.xof Orange Money, MGA - orange_money.mga PalmPay, NGN - palmpay.ngn PayTM, INR - paytm.inr Phone PE, INR - phonepe.inr QMoney, GMD GAMBIA - qmoney-gambia.gmd SEPA, EUR - sepa.eur T-Money, XOF TOGO - tmoney.xof TCash, KES KENYA - tcash-kenya.kes Tether ERC20, USDT ERC20 - usdt_erc20 Tether TRC20, USDT TRC20 - usdt_trc20 Tigo, TZS TANZANIA - tigo-tanzania.tzs Tigo, GHS GHANA - tigo-ghana.ghs TNM, MWK MALAWI - tnm-malawi.mwk Tron, TRX - tron UPI, INR - upi.inr USDC TRC20, USDC TRC20 - usdc_trc20 Vanilla Pay, MGA - vanilla_pay.mga Verve, NGN - verve.ngn VisaMaster, UAH - visamaster.uah VisaMaster, NGN - visamaster.ngn VisaMaster, EUR - visamaster.eur VisaMaster, USD - visamaster.usd Vodafone, TZS TANZANIA - vodafone-tanzania.tzs Vodafone, GHS GHANA - vodafone-ghana.ghs Vodafone, CDF CONGO - vodafone-congo.cdf Wave, GMD GAMBIA - wave-gambia.gmd Wave, XOF CI - wave-ci.xof Wave, XOF SENEGAL - wave-senegal.xof WizAll, XOF SENEGAL - wiz_all-senegal.xof Zamtel, ZMW ZAMBIA - zamtel-zambia.zmw , AFN - cash_terminal.afn , NGN - cash_terminal.ngn |
| DESCRIPTION | Description of the invoice |
| SUCCESS_URL* | URL to which the user will be redirected after successful payment |
| FAIL_URL* | URL to which the user will be redirected after unsuccessful payment |
| STATUS_URL* | URL to which a callback is sent when the invoice reaches its final status. An empty GET request is sent, and upon receiving it, the merchant should request the invoice status via the API and make decisions based on the received data |
When making the request, either the CURRENCY or PAYMENT_CURRENCY field is mandatory. In case both fields are provided, the priority is given to PAYMENT_CURRENCY, and the CURRENCY field is ignored.
Example of signature formation in PHP.
$clientID = 123; $secret = "qwertyuiop123456"; $data = [ "CLIENT_ID" => $clientID, "INVOICE_ID" => "1", "AMOUNT" => "100", "CURRENCY" => "UAH", "PAYMENT_CURRENCY" => "visamaster.uah", "DESCRIPTION" => "Test payment", "SUCCESS_URL" => "https://test.ua/success/1", "FAIL_URL" => "https://test.ua/fail/1", "STATUS_URL" => "https://test.ua/status/1" ]; $sign = base64_encode(md5($secret . base64_encode(sha1(implode("", $data), true)) . $secret, true)); $data["SIGN_ORDER"] = implode(";", array_keys($data)); $data["SIGN"] = $sign;